﻿using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Projeto
{
    public partial class FormCadastraColaborador : Form
    {
        //VARIAVEIS GLOBAIS
        private PoolConexoes conexoes = new PoolConexoes();
        private ValidaFormulario valida = new ValidaFormulario();

        public FormCadastraColaborador()
        {
            InitializeComponent();
        }

        private void buttonCadastrar_Click(object sender, EventArgs e)
        {
            if (buttonCadastrar.Text.Equals("Cadastrar"))
            {
                cadastrarColaborador();
            }
            else if (buttonCadastrar.Text.Equals("Alterar"))
            {
                alterarDadosColaborador();
            }
        }

        //METODO PARA CADASTRAR USUARIO
        private void cadastrarColaborador()
        {
            Colaborador colaborador = new Colaborador();

            colaborador.CodColaborador = textBoxCodColaborador.Text;
            colaborador.Nome = textBoxNome.Text;
            colaborador.Endereco = textBoxEndereco.Text;
            colaborador.Telefone = textBoxTelefone.Text;
            colaborador.Rg = textBoxRG.Text;
            colaborador.Cpf = textBoxCPF.Text;
            colaborador.Sexo = comboBoxSexo.Text;
            colaborador.Observacao = textBoxObservacao.Text;
            
            ArrayList mensagens = valida.validaColaborador(colaborador);

            if (mensagens.Count > 0)
            {
                String mensagem = (String)mensagens[0];
                MessageBox.Show(mensagem);
            }
            else
            {
                try
                {
                    bool insert = conexoes.insertColaborador(colaborador);

                    if (insert)
                    {
                        MessageBox.Show("Cadastro salvo com sucesso.");
                        limpar();
                    }
                    else
                    {
                        MessageBox.Show("Erro ao cadastro colaborador.");
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Erro ao cadastro colaborador.");
                }
            }
        }

        //METODO VERIFICA ALTERACOES NO CADASTRO ATUAL
        private void alterarDadosColaborador()
        {

            Colaborador colaborador = conexoes.getColaborador(textBoxCodColaborador.Text);

            Boolean isAlterar = isAlteracao(colaborador);

            if (isAlterar)
            {
                Colaborador novoColaborador = new Colaborador();

                novoColaborador.CodColaborador = textBoxCodColaborador.Text;
                novoColaborador.Nome = textBoxNome.Text;
                novoColaborador.Endereco = textBoxEndereco.Text;
                novoColaborador.Telefone = textBoxTelefone.Text;
                novoColaborador.Rg = textBoxRG.Text;
                novoColaborador.Cpf = textBoxCPF.Text;
                novoColaborador.Sexo = comboBoxSexo.Text;
                novoColaborador.Observacao = textBoxObservacao.Text;

                try
                {
                    bool insert = conexoes.updateColaborador(novoColaborador);

                    if (insert)
                    {
                        MessageBox.Show("Cadastro alterado com sucesso.");
                    }
                    else
                    {
                        MessageBox.Show("Erro ao alterar colaborador.");
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Erro ao alterar colaborador.");
                }
            }
            else
            {
                MessageBox.Show("Não houve alterações.");
            }

        }

        //METODO RETORNA BOOLEANO SOBRE ALTERACOES NOS CAMPOS
        private Boolean isAlteracao(Colaborador colaborador)
        {
            if (!colaborador.CodColaborador.Equals(textBoxCodColaborador.Text))
            {
                return true;
            }

            if (!colaborador.Nome.Equals(textBoxNome.Text))
            {
                return true;
            }

            if (!colaborador.Endereco.Equals(textBoxEndereco.Text))
            {
                return true;
            }

            if (!colaborador.Telefone.Equals(textBoxTelefone.Text))
            {
                return true;
            }

            if (!colaborador.Rg.Equals(textBoxRG.Text))
            {
                return true;
            }

            if (!colaborador.Cpf.Equals(textBoxCPF.Text))
            {
                return true;
            }

            if (!colaborador.Sexo.Equals(comboBoxSexo.Text))
            {
                return true;
            }

            if (!colaborador.Observacao.Equals(textBoxObservacao.Text))
            {
                return true;
            }

            return false;
        }

        private void buttonLimpar_Click(object sender, EventArgs e)
        {
            limpar();
        }

        private void limpar()
        {
            textBoxCodColaborador.Text = "";
            textBoxNome.Text = "";
            textBoxEndereco.Text = "";
            textBoxTelefone.Text = "";
            textBoxRG.Text = "";
            textBoxCPF.Text = "";
            comboBoxSexo.Text = "";
            textBoxObservacao.Text = "";

            buttonCadastrar.Text = "Cadastrar";

            textBoxCodColaborador.Enabled = true;

        }

        private void buttonExcluir_Click(object sender, EventArgs e)
        {
            if (!textBoxCodColaborador.Text.Equals(""))
            {
                if (MessageBox.Show("Deseja realmente excluir Colaborador?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) excluirColaborador();
            }
        }

        private void excluirColaborador()
        {
            if (!textBoxCodColaborador.Text.Equals(""))
            {
                bool isExcluido = conexoes.excluirColaborador(textBoxCodColaborador.Text);

                if (isExcluido)
                {
                    MessageBox.Show("Cadastro excluido com sucesso.");
                    limpar();
                }
                else
                {
                    MessageBox.Show("Erro ao excluido colaborador.");
                }

            }
        }

        private void textBoxCodColaborador_Leave(object sender, EventArgs e)
        {
            if (textBoxCodColaborador != null && !textBoxCodColaborador.Text.Equals(""))
            {
                try
                {

                    Colaborador colaborador = conexoes.getColaborador(textBoxCodColaborador.Text);

                    if (colaborador != null)
                    {
                        textBoxCodColaborador.Text = colaborador.CodColaborador;
                        textBoxNome.Text = colaborador.Nome;
                        textBoxEndereco.Text = colaborador.Endereco;
                        textBoxTelefone.Text = colaborador.Telefone;
                        textBoxRG.Text = colaborador.Rg;
                        textBoxCPF.Text = colaborador.Cpf;
                        comboBoxSexo.Text = colaborador.Sexo;
                        textBoxObservacao.Text = colaborador.Observacao;

                        buttonCadastrar.Text = "Alterar";
                        textBoxCodColaborador.Enabled = false;
                    }

                }
                catch (Exception)
                {
                    MessageBox.Show("Erro ao carregar o Colaborador: " + textBoxCodColaborador.Text);
                }


            }
        }
    }
}
